import Vue from 'vue'

/**权限指令**/
const has = Vue.directive('has', {
  // 当被绑定的元素插入到 DOM 中时……
  inserted: function (el, binding, vnode) {
    let btnPermission = '';
    // 获取路由按钮权限，路由的js文件中配置，是操作所需要的权限
    btnPermission = vnode.context.$route.meta.btnPermission;
    // 调用自定义的权限检查方法 $_has
    if (!Vue.prototype.$_has(btnPermission)) {
      console.log("not have this permission"); // 如果没有权限，打印提示信息
      el.remove() // 移除没有权限的元素
    }
  }
});

// 权限检查方法
Vue.prototype.$_has = function (value) {
  // 从 sessionStorage 中获取实际拥有的权限
  let btnPermission = sessionStorage.getItem("btnPermission");
  // 如果 sessionStorage 中没有权限信息，则返回 false
  if (btnPermission == undefined || btnPermission == null) {
    return false;
  }
  // value 是路由中所需要的权限，btnPermission是实际拥有的权限，在Login.vue登录时授权
  // 比较路由中需要的权限和实际拥有的权限是否相等
  let res = value == btnPermission
  // 如果相等则返回 true，表示有权限
  if(res) return true
  // 如果不相等则返回 false，表示没有权限
  return false
};

// 导出 has 指令
export {has}
